<?php
class View_Product{
	/**
	 * Метод выводит список товаров в админке
	 * 
	 * @param array $arrProducts - массив товаров
	 */
	public static function showAdminList(array &$arrProducts) {
		echo '<div class="admin-list">';
			if(empty($arrProducts)) echo 'Товаров нет';
			foreach($arrProducts as $arrProduct) {
				echo '<div class="item">';
					echo '<a href="' . W_ABSPATH . 'products/' . $arrProduct['url'] . '" target="_blank">' . $arrProduct['product_name'] . '</a>';
					echo ' (<a href="' . W_ADMIN . 'products/edit/' . $arrProduct['ID_product'] . '">Редактировать</a>,';
					echo ' <a href="' . W_ADMIN . 'products/gallery/' . $arrProduct['ID_product'] . '">Галлерея</a>,';
					echo ' <a href="' . W_ADMIN . 'receipts/add?product=' . $arrProduct['ID_product'] . '">Приход</a>)';
				echo '</div>';
			}
		echo '</div>';
	}
	
	/**
	 * Выводит форму добавления/редактирвоания товара
	 *
	 * @param Product $objProduct
	 */
	public static function showEditForm(Product $objProduct, $arrBrands = array()) {
		$objForm = new View_Form(array(
				'id' => 'product-edit-form',
				'left-width' => 140
		), $objProduct);
		
		$arrBrands = Service_ArrayConverter::makeKeySimpleArrayFromMultyArray($arrBrands, 'ID_brand', 'brand_name');
		
		if($objProduct->id) echo '<div><a href="' . W_ADMIN . 'products/gallery/' . $objProduct->id . '">Редактировать фото</a></div>';
		
		$objForm->show();
			$objForm->textField(array('name' => 'product_name', 'text' => 'Название'));
			$objForm->textArea(array('name' => 'description', 'text' => 'Описание'));
			$objForm->textField(array('name' => 'url', 'text' => 'URL'));
			$objForm->select(array('name' => 'ID_category', 'options' => $objProduct->getCategoriesAvailableForLink(), 'chooseText' => 'Без категории', 'text' => 'Категория'));
			$objForm->select(array('name' => 'type', 'options' => Product::$availableSizeTypes, 'text' => 'Тип размеров'));
			$objForm->select(array('name' => 'sex', 'options' => array(0 => 'Женский', 1 => 'Мужской', 2 => 'Унисекс'), 'text' => 'Пол'));
			if (!empty($arrBrands)) $objForm->select(array('name' => 'ID_brand', 'options' => $arrBrands, 'chooseText' => 'Без бренда','text' => 'Бренд'));
			
			$objForm->textField(array('name' => 'our_price', 'text' => 'Наша цена'));
			$objForm->textField(array('name' => 'client_price', 'text' => 'Цена клиента'));
			$objForm->textField(array('name' => 'meta_keywords', 'text' => 'Meta keywords'));
			$objForm->textField(array('name' => 'meta_description', 'text' => 'Meta description'));
			$objForm->checkbox(array('name' => 'no_product', 'label' => 'Товар недоступен', 'id' => 'no_product','is_checked' => $objProduct->getField('no_product')));
			//$objForm->textField(array('name' => 'wordstat_simple', 'text' => 'Wordstat обычный'));
			//$objForm->textField(array('name' => 'wordstat_buy', 'text' => 'Wordstat "купить"'));
			//$objForm->textField(array('name' => 'wordstat_price', 'text' => 'Wordstat "цена"'));
			
			self::showProductPropertiesForEdit($objProduct->id, $objForm);
			
			$objForm->hiddenField(array('name' => 'ID_product'));
			$objForm->submit();
		$objForm->close();
	}
	
	/**
	 * Выводит страницу товара
	 * 
	 * @param Product $objProduct - объект товара
	 * @param array $arrSizes - массив имеющихся размеров товара
	 * @param array $arrPhotosIds - массив фотографий текущего товара
	 * @param array $arrReviews - массив отзывов о товаре
	 * @pararm array $arrSimilarProducts - массив похожих товаров
	 */
	public static function showProductPage(Product $objProduct, array &$arrSizes, array &$arrPhotosIds, array &$arrReviews, array &$arrSimilarProducts) {
		$arrProductProperties = ProductProperty::getProductProperties($objProduct->id);
		$objForm = new View_Form();
		echo '<div class="product-left">';
			echo '<div class="product-iamges">';
				echo '<div class="main-image">';
					echo '<a href="' . View_Poster::getPath($objProduct->getField('ID_photo'), 'original') . '" data-lightbox="product-gallery" title="' . $objProduct->getField('product_name') . '">';
						echo '<img src="' . View_Poster::getPath($objProduct->getField('ID_photo'), '200x200') . '" alt="' . $objProduct->getField('product_name') . '">';
					echo '</a>';
				echo '</div>';
				echo '<div class="add-images">';
					foreach($arrPhotosIds as $arrPhotoId) {
						if($arrPhotoId == $objProduct->getField('ID_photo')) continue;
						echo '<a href="' . View_Poster::getPath($arrPhotoId, 'original') . '" data-lightbox="product-gallery" title="' . $objProduct->getField('product_name') . '">';
							echo '<img src="' .  View_Poster::getPath($arrPhotoId, '40x40') . '">';
						echo '</a>';
					}
				echo '</div>';
			echo '</div>';
			echo '<div class="product-price">' . $objProduct->getField('client_price') . ' руб.</div>';
		echo '</div>';
		echo '<div class="product-info">';
			echo '<div class="product-desc sh-block">' . $objProduct->getField('description') . '</div>';
			
			if(!empty($arrProductProperties)) {
				echo '<table class="product-properties">';
				foreach($arrProductProperties as $arrProductProperty) {
					echo '<tr>';
					echo '<td class="prop-name">' . $arrProductProperty['property_name'] . '</td>';
					echo '<td class="prop-value">' . $arrProductProperty['value_name'] . '</td>';
					echo '</tr>';
				}
				echo '</table>';
			}
			
			echo '<div class="all-sizes fr">';
				$objForm->select(array('text' => 'Размер', 'options' => $arrSizes));
				echo '<a href="#" class="buy green-btn" data-product-id="' . $objProduct->id . '">Купить</a>';
			echo '</div>';
		echo '</div>';
		echo '<div class="clear"></div>';
		
		if(DOMAIN == 'wearland.ru') {
			echo '<div class="social-widgets">';
				echo '<div id="vk-like"></div>';
				echo '<script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript" charset="windows-1251"></script>';
				echo '<script type="text/javascript">VK.init({apiId: 3958868, onlyWidgets: true});</script>';
				echo '<script type="text/javascript">VK.Widgets.Like("vk-like", {type: "button", height: 24, pageTitle: "' . $objProduct->getField('product_name') . '", pageDescription:"' .  'Купить ' . $objProduct->getField('product_name') . ', отзывы, цены и фотографии товара", page_id: ' . $objProduct->id . '});</script>';
			echo '</div>';
		}
		
		self::showProductBenefits();
		self::showReviewsBlock($arrReviews);
		
		echo '<h2 class="l-subtitle">Похожие товары</h2>';
		self::showProductsList($arrSimilarProducts);
	}

    /**
     * Отображаем преимущества продукта
     */
    public static function showProductBenefits() {
        $arrBenefits[] = array('header' => 'Гарантия минимальной цены', 'width' => '35', 'title' => 'Мы гарантируем минимальную цену на наш товар. Если вы найдете в других интернет-магазинах такой же товар, аналогичного качества и по более низкой цене, то мы компенсируем разницу');
        $arrBenefits[] = array('header' => 'Гарантия качества', 'width' => '25', 'title' => '100% качественный и оригинальный товар от официальных поставщиков компании');
        $arrBenefits[] = array('header' => 'Доставка', 'width' => '15', 'title' => 'Мы осуществляем доставку в города России и стран СНГ');
        $arrBenefits[] = array('header' => 'Без предоплаты', 'width' => '25', 'title' => 'Вы оплачиваете покупку только после получения товара, никакой предоплаты');

        echo '<div class="product-benefits">';
            foreach ($arrBenefits as $arrBenefit) {
                echo '<div class="product-benefit show-tooltip" data-title="' . $arrBenefit['title'] . '" style="width: ' . $arrBenefit['width'] . '%;"><span>' . $arrBenefit['header'] . '</span></div>';
            }
            echo '<div class="clear"></div>';
        echo '</div>';
    }
	
	/**
	 * Отображает форму добавления отзыва
	 */
	public static function showReviewAddingForm() {
		echo '<div class="add-review-wrap">';
			echo '<div class="add-review-block sh-block">';
				echo '<textarea id="review-text"></textarea>';
				echo '<div class="val-err"></div>';
				echo '<div class="stars">';
					echo '<div class="b-stars-pattern"></div>';
					echo '<div class="b-stars-value"></div>';
					echo '<div class="traps">';
						echo '<span></span>';
						echo '<span></span>';
						echo '<span></span>';
						echo '<span></span>';
						echo '<span></span>';
					echo '</div>';
				echo '</div>';
				
				echo '<div class="btns">';
					echo '<a class="save-review blue-btn" href="#">Сохранить</a>';
					echo '<a class="cancel-s-review white-btn" href="#">Отмена</a>';
				echo '</div>';
				echo '<div class="clear"></div>';
			echo '</div>';
		echo '</div>';
	}
	
	/**
	 * Отображает отзывы на странице товара
	 * 
	 * @param array $arrReviews - массив отзывов
	 */
	public static function showProductReviews(array &$arrReviews) {
		$arrNames = array(
				'Глеб','Вячеслав','Альберт','Егор','Кирилл','Марк','Никита',
				'Алексей','Ярослав','Сергей','Пётр','Герман','Артур','Юрий',
				'Владимир','Антон','Иван','Константин','Михаил','Роберт',
				'Рустам','Арсений','Анатолий','Аркадий','Даниил','Евгений',
				'Андрей','Ильдар','Тимофей','Валерий','Захар','Максим','Геннадий',
				'Владислав','Артём','Богдан','Леонид','Станислав','Тарас',
				'Борис','Александр','Яков',	'Марат','Валентин','Павел','Рашид',
				'Эльдар','Василий','Игорь','Николай','Руслан','Вадим','Эмиль',
				'Ринат','Виталий','Григорий','Назар','Филипп','Дмитрий','Степан',
				'Виктор','Георгий','Денис','Роман','Фёдор','Илья','Давид','Семён','Олег'
		);
		
		echo '<div class="u-reviews">';
			foreach($arrReviews as $arrReview) {
				if($arrReview['is_admin']) {// Если отзыв админа ставим рандомное имя
					$key = ($arrReview['ID_review'] + UTF8::strlen($arrReview['review_text'])) % (count($arrNames) - 1);
					$arrReview['first_name'] = $arrNames[$key];	
				}
				echo '<div class="u-review">';
					echo '<div class="author">' . $arrReview['first_name'] . '</div>';
						echo '<div class="o-rating-stars">';
							echo '<div class="stars-pattern"></div>';
							echo '<div class="stars-value"  style="width:' . (100 * $arrReview['score'] / 5)  .'%;"></div>';
					echo '</div>';
					echo '<div class="review-text">' . $arrReview['review_text'] . '</div>';
				//	echo '<div class="review-date fr">' . $arrReview['created_at'] . '</div>';
				echo '</div>';
			}
		echo '</div>';
	}
	
	public static function showProductsList($arrProducts) {
		if(empty($arrProducts)) return false;
	
		echo '<div class="p-list">';
			foreach($arrProducts as $arrProduct) {
				echo '<div class="p-item sh-block">';
					echo '<div class="p-photo">';
						echo '<img src="' . View_Poster::getPath($arrProduct['ID_photo'], '170x170')  . '">';
					echo '</div>';
					echo '<div class="o-rating-stars">';
						echo '<div class="stars-pattern"></div>';
						echo '<div class="stars-value"  style="width:' . (100 * $arrProduct['reviews_score'] / 5)  .'%;"></div>';
					echo '</div>';
					echo '<a class="p-name" href="' . W_ABSPATH . 'products/' . $arrProduct['url'] . '" title="Купить ' . $arrProduct['product_name'] . '">' . $arrProduct['product_name'] . '</a>';
					echo '<div class="p-price">' . $arrProduct['client_price'] . ' руб.</div>';
					echo '<div class="bottom-line"></div>';
					echo '<span class="p-item-shadow"></span>';
				echo '</div>';
			}
			echo '<div class="clear"></div>';
		echo '</div>';
	}
	
	/**
	 * Выводит страницу активов для администратора
	 * 
	 * @param array $arrProducts - массив продуктов
	 */
	public static function showAdminACtiveList(array $arrProducts) {
		if(empty($arrProducts)) echo '<h2>Активы отсутствуют</h2>';
		foreach($arrProducts as $arrProduct) {
			echo '<h2>' . $arrProduct['product_name'] . ' (' . $arrProduct['size_name'] .') - ' . $arrProduct['count'] . '</h2>';
		}
	}
	
	/**
	 * Редактирование галлереи
	 * 
	 * @param Product $objProduct - объект продукта
	 */
	public static function showGalleryForm(Product $objProduct) {
		$objForm = new View_Form(array(
			'id' => 'product-edit-form',
			'left-width' => 100,
			'multipart' => true
		), $objProduct);
		
		$objForm->show();

			echo '<input id="images-upload" type="file" name="file[]" multiple />';
			
		$objForm->submit(array('class' => 'green-btn', 'value' => 'Сохранить'));
		$objForm->close();
	}
	
	/**
	 * Отображаем фотки товара
	 * 
	 * @param array $arrPhotos - массив фоток
	 * @param int $photoMainId - ID главной фотки
	 */
	public static function showProductPhotos(array $arrPhotos, $photoMainId) {
		echo '<div class="product-photos">';
			if(empty($arrPhotos)) echo 'Фотографии отсутствуют.';
			foreach ($arrPhotos as $photoId) {
				echo '<div class="product-photo photo-contain" data-photo-id="' . $photoId . '">';
					echo '<img src="' . View_Poster::getPath($photoId, '170x170') . '"' . ($photoMainId == $photoId ? ' class="main"' : null) . '>';
					echo '<a href="#" class="main-photo">Сделать главной</a><br>';
					echo '<a href="#" class="delete-photo">Удалить</a>';
				echo '</div>';
			}
			echo '<div class="clear"></div>';
		echo '</div>';
	}
	
	/**
	 * Выводит блок для редактирования свойст товара
	 * 
	 * @param int idProduct - id продукта
	 * @param ViewForm $objForm - объект формы, в рамках которой осуществляется редактирование
	 */
	public static function showProductPropertiesForEdit($idProduct, View_Form $objForm) {
		$arrProperties = ProductProperty::getAllProperties();
		$arrProductProperties = Service_ArrayConverter::getColumn(ProductProperty::getProductProperties($idProduct), 'ID_product_property_value');

		echo '<div class="product-properties">';
			echo '<h2>Характеристики товара</h2>';
			foreach($arrProperties as $idProperty => $arrProperty) {
				echo '<div class="item">';
					echo '<h3>' .  $arrProperty[0]['property_name'] . '</h3>';
					echo '<div class="prop-values">';
						foreach($arrProperty as $arrPropertyValue) {
							$objForm->checkbox(array(
									'name' => 'prod_prop' . $arrPropertyValue['ID_product_property_value'] ,
									'id' => 'ch' . $arrPropertyValue['ID_product_property_value'], 
									'label' => $arrPropertyValue['value_name'],
									'is_checked' => in_array($arrPropertyValue['ID_product_property_value'], $arrProductProperties) ? true : false
							));
						}
					echo '</div>';
				echo '</div>';
			}
			echo '<div class="clear"></div>';
		echo '</div>';
	}
	
	/**
	 * Выводит блок с отзывами на странице товара
	 * 
	 * @param array $arrReviews - массив отзывов
	 */
	public static function showReviewsBlock(array &$arrReviews) {
		$arrScores = array(
				5 => 0,
				4 => 0,
				3 => 0,
				2 => 0,
				1 => 0
		);
		
		// Считаем оценки по всем отзывам...Надо будет сделать, чтобы оценка хранилась в продукте
		foreach($arrReviews as $arrReview) {
			$arrScores[$arrReview['score']]++;
		}
		
		$maxScore = $maxScoreAmount = $peopleCount = $sumScore = 0;
		foreach ($arrScores as $score => $count) {
			if($count != 0) {
				$sumScore += $score * $count;
				if($count > $maxScoreAmount) {
					$maxScore = $score;
					$maxScoreAmount = $count;
				}
			}
			$peopleCount += $count;
		}
		
		$middleScore = $peopleCount ? round($sumScore / $peopleCount, 1) : 0;
		
		echo '<div class="reviews">';
			if(User_Seance::isLogged()) self::showReviewAddingForm();
			echo '<h2 class="l-subtitle">Отзывы</h2>';
			if(User_Seance::isLogged()) echo '<a class="add-review blue-btn" href="#">Написать отзыв</a>';
			echo '<div class="rank-card sh-block">';
				echo '<div class="part">';
					echo '<div class="score">' . $middleScore . '</div>';
					echo '<div class="stars">';
						echo '<div class="b-stars-pattern"></div>';
						echo '<div class="b-stars-value" style="width:' . ( $maxScore != 0 ? 100 * $middleScore / 5 : 0)  .'%;"></div>';
						echo '<div class="people-count">Отзывов: ' . $peopleCount . '</div>';
					echo '</div>';
					echo '<div class="people-count"></div>';
				echo '</div>';
				echo '<div class="part bars">';
					for($i = 5; $i > 0; $i--) {
						echo '<div class="bar-score val' . $i . '">';
							echo '<span class="bar-label">' . $i . '</span>';
							echo '<span class="bar-container">';
								echo '<span class="bar-value">' . $arrScores[$i] . '</span>';
								if($i == $maxScore) $barWidth = 100;
								elseif($maxScore != 0 && $arrScores[$maxScore]) $barWidth = round(100 * $arrScores[$i] / $arrScores[$maxScore]);
								else $barWidth = 0;
								echo '<div class="bar" style="width:' . $barWidth . '%;"></div>';
							echo '</span>';
						echo '</div>';
					}
				echo '</div>';
			echo '</div>';
			echo '<div class="reviews-slogan">Оставьте отзыв о товаре и поставьте ему оценку - помогите другим пользователям выбрать лучший товар.</div>';
			echo '<div class="clear"></div>';
			
			self::showProductReviews($arrReviews);
		echo '</div>';
	}
}